/**
 * @desc 查找给定字符串中子字符串的所有索引
 * @param str
 * @param searchValue
 * @returns {IterableIterator<number>}
 */
const indexOfSubstrings = function* (str, searchValue) {
	let i = 0;
	while (true) {
		// 查找子串下标
		const r = str.indexOf(searchValue, i);
		// 若存在迭代索引
		if (r !== -1) {
			yield r;
			// 下一个索引
			i = r + 1;
		} else return 0;
	}
};
//例子
const find1 = [...indexOfSubstrings('tiktok tok tok tik tok tik', 'tik')]; // [0, 15, 23]
const find2 = [...indexOfSubstrings('tutut tut tut', 'tut')]; // [0, 2, 6, 10]
const find3 = [...indexOfSubstrings('hello', 'hi')]; // []

console.log(find1)
console.log(find2)
console.log(find3)
